/***************************************************
 @Name :        小铭同学
 @Time :        2022-10-30
 @Email :       LiaoMingWJ233@163.com
 @Comment :     受控运行功能的实现
 @FileName :    controlled.c
 @Version :     1.0
****************************************************/


#include "controlled.h"

#include "track.h"

#include "device.h"

#include "timer.h"


/* 上位机控制下左转 */
static void ctrl_turn_left(void)
{
  track_turn_left(speed_medium);
}


/* 上位机控制下右转 */
static void ctrl_turn_right(void)
{
  track_turn_right(speed_medium);
}


/* 上位机控制下前进 */
static void ctrl_drive(void)
{
  /* 往前开一点，防止当前十字路口误判 */
  drive(speed_low);
  delay_ms(200);

  /* 循迹控制循环 */
  while (1)
  {
    //delay_ms(20);
    track_drive1(speed_lowz);

    /* 遇到十标号，停车，跳出控制循环 */
    if (gray_is_cross())
    {
      track_stop();
      break;
    }
  }
	
	/*track_stop();
	track_reverse(speed_medium);
	delay_ms(80);
	if(gray_is_cross2())
	{
		track_stop();
	}*/
	
}

/* 上位机控制下后退 */
static void ctrl_reverse(void)
{
  reverse(speed_low);
   delay_ms(800);
	//delay_ms(700);

  /* 循迹控制循环 */
  while (1)
  {
    //delay_ms(20);
    track_reverse(speed_medium);

    /* 遇到十标号，停车，跳出控制循环 */
    if (gray_is_cross())
    {
      track_stop();
      break;
    }
  }
}


void ctrl_run(unsigned char cmd)
{
  switch (cmd)
  {
    case 'w' :
      ctrl_drive();
      break;
    case 's' :
      ctrl_reverse();
      break;
    case 'a' :
      ctrl_turn_left();
      break;
    case 'd' :
      ctrl_turn_right();
      break;
    case 'b' :
      ctrl_turn_left();
      break;
    case 'c' :
      ctrl_turn_right();
      break;
		
		case 'l' :
      timer_servo2_pwm_set(2450);//左正
      break;
		case 'i' :
      timer_servo2_pwm_set(4800);//左
      break;
		case 'r' :
      timer_servo1_pwm_set(4650);//右正
      break;
		case 't' :
      timer_servo1_pwm_set(2400);//右
      break;
		case 'o' :
			timer_servo2_pwm_set(4800);
      timer_servo1_pwm_set(2400);//全开
      break;
		case 'g' :
			timer_servo2_pwm_set(2450);//
      timer_servo1_pwm_set(4650);//全关
      break;
		
		/*case 'j' :
      
      break;*/
    default  :
      break;
  }
}








